package com.itany.corejava.code07_常用类.object;

/**
 * @author MissChen
 * @date 2024年02月27日 9:07
 */
public class Test {
    public static void main(String[] args) {
        Person person=new Person();
        // //所有的类都直接或者间接继承了Object
        // // 因此，都能调用Object所提供的方法
        // getClass方法用于返回运行时类型
        // 返回数据格式:class 包名.类名
        System.out.println(person.getClass());


        //多态，父类的引用指向了子类的对象
        Person person2=new Man();
        // 此时编译时类型:Person
        // 此时运行时类型:Man
        System.out.println(person2.getClass());
        if(person2 instanceof Man){
            Man man=(Man)person2;
            man.work();
        }

        //此时也可以通过运行时类型进行判断
        // 每一个类都有一个class属性，其属性值即为当前类的class类型
        // 语法:类名.class
        System.out.println(Person.class);
        System.out.println(Man.class);

        Person person3=new WoMan();
        System.out.println(person3.getClass());

        //当某个对象的运行时类型与某个类的ckass属性值一致时候，说明是同一个类型
        // 此时可以强制类型转换
        if(person2.getClass()==Man.class){
            Man man=(Man)person2;
            man.work();
        }

        System.out.println(person2.getClass()==Man.class);//true
        System.out.println(person2.getClass()==WoMan.class);//false


    }
}
